MySQL 配置文件中 client 和 mysql 两个 group 的区别
MySQL 的文档里有这么一句:
The [client] option group is read by all client programs provided in MySQL distributions (but not by mysqld).
就是说 [client] 里面的内容可以被 mysql, mysqladmin, mysqldump 等等客户端读取,而 [mysql] 里的内容只能给 mysql 客户端读取。
比如,给一个配置 A:
[client]
user = lsz
password = passwd
port = 3306
host = 127.0.0.1
[mysql]
user = root
password = passwd
port = 3306
prompt = [\u@\p][\d]
no_auto_rehash
使用 mysql
命令连接数据库,最终可以看到连到数据库的是 root 用户。因为 mysql group 在 client group 之后,而后面的 ( mysql 中的 ) 配置会覆盖之前的 ( client 中的 ) 配置。
如果 mysql group 先出现而 client 后出现,那么最终连接到数据库的是 lsz 用户。
同时,不论 mysql group 还是 client group 哪个在前,登陆成功后的 prompt 都是 [\u@\p][\d]
格式的。因为 prompt
出现了一次 ( 意味着它被配置了 ),并且只出现了一次 ( 意味着配置没有被覆盖 )。
给一个配置 B:
[client]
user = lsz
password = passwd
port = 3306
host = 127.0.0.1
[mysql]
user = root
password = passwd
port = 3308 # wrong port
prompt = [\u@\p][\d]
no_auto_rehash
使用 mysql, mysqladmin, mysqldump 分别连接,会出现:
- mysql 连接失败。因为 mysql group 里给的端口是错的。
- mysqladmin, mysqldump 以 lsz 的身份连接成功。
给一个配置 C:
[client]
user = lsz
password = passwd
port = 3308 # wrong port
host = 127.0.0.1
[mysql]
user = root
password = passwd
port = 3306
prompt = [\u@\p][\d]
no_auto_rehash
使用 mysql, mysqladmin, mysqldump 分别连接,会出现:
- mysql 以 root 的身份连接成功。
- mysqladmin, mysqldump 连接失败。因为 client group 里给的端口是错的。